App({

    /**
     * 全局变量
     */
    globalData: {
        user_id: null,
    },

    // api_root: 'https://api.chaotingtiyu.com/test_coach/coach/caller/public/', // api
    api_root: 'https://api.chaotingtiyu.com/wpersonal/yuekeadmin/caller/public/', // api地址
    siteInfo: require('siteinfo.js'),

    /**
     * 生命周期函数--监听小程序初始化
     */
    onLaunch: function () {
        this.setApiRoot();
        var updateManager = wx.getUpdateManager()

        updateManager.onCheckForUpdate(function (res) {
            // 请求完新版本信息的回调
            console.log(res.hasUpdate)
        })

        updateManager.onUpdateReady(function () {
            wx.showModal({
                title: '更新提示',
                content: '新版本已经准备好，是否重启应用？',
                success: function (res) {
                    if (res.confirm) {
                        // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                        updateManager.applyUpdate()
                    }
                }
            })

        })
        updateManager.onUpdateFailed(function () {
            wx.showModal({
                title: '更新提示',
                content: '新版本已经上线啦~，请您删除当前小程序，重新搜索打开哟~',
                success: function (res) {

                }
            })
        })
    },
    onShow: function () {
        // 判断变量，选择跳转位置
        if (wx.getStorageSync('openid') == '') {
            wx.reLaunch({
                url: '/pages/phone_login/phone_login',
            })
        } else if (wx.getStorageSync('phone') == '') {
            wx.reLaunch({
                url: '/pages/phone_login/phone_login',
            })
        }
    },
    onHide: function () {
        this.globalData.scence = 1;
    },
    /**
     * 执行用户登录
     */


    /**
     * 设置api地址
     */
    setApiRoot: function () {
        this.api_root = this.siteInfo.siteroot + 'index.php/';
    },

    /**
     * 当前用户id
     */
    getUserId: function () {
        return wx.getStorageSync('user_id');
    },

    /**
     * 显示成功提示框
     */
    showSuccess: function (msg, callback) {
        wx.showToast({
            title: msg,
            icon: 'success',
            success: function () {
                callback && (setTimeout(function () {
                    callback();
                }, 1500));
            }
        });
    },

    /**
     * 显示失败提示框
     */
    showError: function (msg, callback) {
        wx.showModal({
            title: '友情提示',
            content: msg,
            showCancel: false,
            success: function (res) {
                callback && callback();
            }
        });
    },

    /**
     * get请求
     */
    _get: function (url, data, success, fail, complete, check_login) {
        wx.showNavigationBarLoading();
        let App = this;
        // 构造请求参数
        data = data || {};
        // 构造get请求
        let request = function () {
            // data.token = wx.getStorageSync('token');
            wx.request({
                url: App.api_root + url,
                header: {
                    'Content-Type': 'application/json'
                },
                data: data,
                success: function (res) {
                    if (res.statusCode !== 200 || typeof res.data !== 'object') {
                        // console.log(res);
                        App.showError('网络请求出错');
                        return false;
                    }
                    if (res.data.code === 0) {
                        // 登录态失效, 重新登录
                        wx.hideNavigationBarLoading();
                        App.doLogin();
                    } else if (res.data.code === 1) {
                        App.showError(res.data.msg);
                        return false;
                    } else {
                        success && success(res.data);
                    }
                },
                fail: function (res) {
                    // console.log(res);
                    App.showError(res.errMsg, function () {
                        fail && fail(res);
                    });
                },
                complete: function (res) {
                    wx.hideNavigationBarLoading();
                    complete && complete(res);
                },
            });
        };
        // 判断是否需要验证登录
        check_login ? App.doLogin(request) : request();
    },

    /**
     * post提交
     */
    _post_form: function (url, data, success, fail, complete) {
        wx.showNavigationBarLoading();
        let App = this;
        wx.request({
            url: App.api_root + url,
            header: {
                'Content-Type': 'application/x-www-form-urlencoded',
            },
            method: 'POST',
            data: data,
            success: function (res) {
                if (res.statusCode !== 200 || typeof res.data !== 'object') {
                    App.showError('网络请求出错');
                    return false;
                }
                if (res.data.code === -1) {
                    // 登录态失效, 重新登录
                    App.doLogin(function () {
                        App._post_form(url, data, success, fail);
                    });
                    return false;
                } else if (res.data.code === 0) {
                    App.showError(res.data.msg, function () {
                        fail && fail(res);
                    });
                    return false;
                }
                success && success(res.data);
            },
            fail: function (res) {
                App.showError(res.errMsg, function () {
                    fail && fail(res);
                });
            },
            complete: function (res) {
                wx.hideLoading();
                wx.hideNavigationBarLoading();
                complete && complete(res);
            }
        });
    },

    /**
     * 验证是否存在user_info
     */
    validateUserInfo: function () {
        let user_info = wx.getStorageSync('user_info');
        return !!wx.getStorageSync('user_info');
    },

    /**
     * 对象转URL
     */
    urlEncode: function urlencode(data) {
        var _result = [];
        for (var key in data) {
            var value = data[key];
            if (value.constructor == Array) {
                value.forEach(function (_value) {
                    _result.push(key + "=" + _value);
                });
            } else {
                _result.push(key + '=' + value);
            }
        }
        return _result.join('&');
    },
    onShareAppMessage: function () {

    }
});